package br.com.requisicao.compra.Bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.requisicao.compra.canonico.UnidadeMedida;
import br.com.requisicao.compra.constantes.ConstantesMensagensErros;
import br.com.requisicao.compra.service.IUnidadeMedidaService;
import br.com.requisicao.compra.service.impl.UnidadeMedidaService;

@ManagedBean(name = "consultaUnidadeMedidaBean")
@SessionScoped
public class ConsultaUnidadeMedidaBean {

	private IUnidadeMedidaService unidadeMedidaService;
	private UnidadeMedida excluirUnidadeMedida;
	private List<UnidadeMedida> unidadeMedidas = new ArrayList<UnidadeMedida>();

	public void consultar(ActionEvent event) {
		this.unidadeMedidaService = new UnidadeMedidaService();

		try {
			this.unidadeMedidas = unidadeMedidaService.obtemUnidadeMedida();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public String excluir() {
		this.unidadeMedidaService = new UnidadeMedidaService();
		FacesContext context = FacesContext.getCurrentInstance();
		Boolean deletou = false;
		try {

			deletou = unidadeMedidaService.excluir(this.excluirUnidadeMedida);

			if (deletou) {
				this.unidadeMedidas.remove(this.excluirUnidadeMedida);
				this.excluirUnidadeMedida = null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					ConstantesMensagensErros.ERRO_INESPERADO_EXCLUIR_UNIDADE_MEDIDA);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}
		return null;
	}

	/**
	 * @return the excluirUnidadeMedida
	 */
	public UnidadeMedida getExcluirUnidadeMedida() {
		return excluirUnidadeMedida;
	}

	/**
	 * @param excluirUnidadeMedida
	 *            the excluirUnidadeMedida to set
	 */
	public void setExcluirUnidadeMedida(UnidadeMedida excluirUnidadeMedida) {
		this.excluirUnidadeMedida = excluirUnidadeMedida;
	}

	/**
	 * @return the unidadeMedidas
	 */
	public List<UnidadeMedida> getUnidadeMedidas() {
		return unidadeMedidas;
	}

	/**
	 * @param unidadeMedidas
	 *            the unidadeMedidas to set
	 */
	public void setUnidadeMedidas(List<UnidadeMedida> unidadeMedidas) {
		this.unidadeMedidas = unidadeMedidas;
	}

	/**
	 * @return the unidadeMedidaService
	 */
	public IUnidadeMedidaService getUnidadeMedidaService() {
		return unidadeMedidaService;
	}

	/**
	 * @param unidadeMedidaService
	 *            the unidadeMedidaService to set
	 */
	public void setUnidadeMedidaService(
			IUnidadeMedidaService unidadeMedidaService) {
		this.unidadeMedidaService = unidadeMedidaService;
	}

}